package com.ixuestar.util;

import java.io.File;
import java.io.FileOutputStream;
import java.util.LinkedList;
import java.util.List;

import org.apache.log4j.Logger;

import com.itextpdf.text.Document;
import com.itextpdf.text.Image;
import com.itextpdf.text.Rectangle;
import com.itextpdf.text.pdf.PdfWriter;

public class Img2PdfUtil {

	 private static Logger logger = Logger.getLogger(Img2PdfUtil.class);

	    /**
	     * 
	     * @param outPdfFilepath 生成pdf文件路径
	     * @param imageFiles 需要转换的图片File类Array,按array的顺序合成图片
	     */
	    public static void imagesToPdf(String outPdfFilepath, File[] imageFiles) throws Exception {

	        logger.info("进入图片合成PDF工具方法");

	        File file = new File(outPdfFilepath);
	        // 第一步：创建一个document对象。
	        Document document = new Document();
	        document.setMargins(0, 0, 0, 0);
	        // 第二步：
	        // 创建一个PdfWriter实例，
	        PdfWriter.getInstance(document, new FileOutputStream(file));
	        // 第三步：打开文档。
	        document.open();
	        // 第四步：在文档中增加图片。
	        int len = imageFiles.length;

	        for (int i = 0; i < len; i++) {
	            if (imageFiles[i].getName().toLowerCase().endsWith(".bmp")
	                    || imageFiles[i].getName().toLowerCase().endsWith(".jpg")
	                    || imageFiles[i].getName().toLowerCase().endsWith(".jpeg")
	                    || imageFiles[i].getName().toLowerCase().endsWith(".gif")
	                    || imageFiles[i].getName().toLowerCase().endsWith(".png")) {
	                String temp = imageFiles[i].getAbsolutePath();
	                logger.info("图片路径："+temp);
	                Image img = Image.getInstance(temp);
	                img.setAlignment(Image.ALIGN_CENTER);
	                img.scaleAbsolute(597, 844);// 直接设定显示尺寸
	                // 根据图片大小设置页面，一定要先设置页面，再newPage（），否则无效
	                //document.setPageSize(new Rectangle(img.getWidth(), img.getHeight()));
	                document.setPageSize(new Rectangle(597, 844));
	                document.newPage();
	                document.add(img);
	            }
	        }
	        // 第五步：关闭文档。
	        document.close();
	        logger.info("图片合成PDF完成");
	    }
	    
	    public static void main(String[] args) {
	        String outPdfPath = "E:\\bbb\\Img2pdf.pdf";
	        String imagesPath = "E:\\aaa";
	        String[] imgNameArray = new String[] { "cloudelParent_008.png", "cloudelParent_009.png", "cloudelParent_010.png" };
	        
	        List<File> linkedList = new LinkedList<File>();
	        for (int i = 0; i < imgNameArray.length; i++) {
				String imgFile = imagesPath + "\\" + imgNameArray[i];
				File file = new File(imgFile);
				linkedList.add(file);
			}
	        
	        File[] files = new File[linkedList.size()];
	        linkedList.toArray(files);
	        try {
				imagesToPdf(outPdfPath, files);
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}

//	         imagesToPdf(outPdfPath, imagesPath, imgNameArray);
	    }
}
